<!DOCTYPE html>
<html>
<head>
	<title></title>
</head>
<body>
<!-- 
1.比较相邻的两个元素，如果前一个比后一个大，则交换位置
2.比较完第一轮的时候，最后一元素的是最大的元素
3.这时候最后一个元素是最大的，所以最后一个元素就不需要参与比较大小

call和apply是函数的方法
	call 给...命名  apply 应用
	- 需要通过函数来调用
	- 当函数call和apply都会调用函数执行
	- call和apply会改变函数中的this指向
	- 在调用call和apply是，可以将一个对象	作为第一个参数。此时这个对象就是	this的指向
	- call /靠/ 方法可以将实参放到对象的后面依次传递
	 call(obj,2,3,4,4)		
	- apply /e破绕特/ 方法把实参封装到数组中从以传递，如果传递对象，对象放前面，数组放后面
	即使是一个实参也要写成数组的形式
	apply(obj,[2,3,4,5])

	总结this情况 
	1.当以函数形式调用时，this指向window
	2.以对象属性方法调用时，this指向调用的对象
	3.以构造函数调用时，this指向新创建的对象
	4.以call和apply调用时，call和apply传递的对象。

	
 -->

</body>
<script type="text/javascript">
// function qu(arr,n){
// 	for (var i = 0; i < arr.length; i++) {
// 		for (var j = i+1; j < arr.length; j++) {
// 			if (arr[i]>arr[j]) {
// 				n = arr[i];
// 				arr[i] = arr[j];
// 				arr[j] = n;
// 			}
// 		}
// 	}
// 	console.log(arr);

// }
// var arr = [1,2,5,12,30,16,298,1];
// var n = null;
// qu(arr,n);

// var arr = [14,6,8,4,2,26,62];
// for (var i = 0; i < arr.length; i++) {
// 	for (var j = i+1; j < arr.length; j++) {
// 		if ((arr[j]-arr[i])<0) {
// 			 n = arr[j];//x
// 			arr[j] = arr[i];//d
// 			arr[i] = n;
// 		}
// 	}
// }
// console.log(arr);


//冒泡排序
var  arr1 = [1,2,5,1,0,4,5]
for (var i = 0; i < arr1.length-1; i++) {
	for (var j = 0; j < arr1.length-i-1; j++) {
		console.log(i);
		if (arr1[j]>arr1[j+1]) {
		var b = arr1[j];
		arr1[j] = arr1[j+1];
		arr1[j+1] = b;
	}
	}	
}
console.log(arr1);

function fun(a,b){
	// alert(this);
	console.log("a"+a);
	console.log("b"+b);
}
//fun.apply();
var obj = {
	name:"张大大"
}
fun.call(obj);
</script>
</html>